package com.cute.leetcode.editor.cn;
import java.util.*;
import java.util.regex.Pattern;

/**
 * 密码要求:
 * 1.长度超过8位
 * 2.包括大小写字母.数字.其它符号,以上四种至少三种
 * 3.不能有长度大于2的不含公共元素的子串重复 （注：其他符号不含空格或换行）
 *
 * 如果符合要求输出：OK，否则输出NG
 */
public class HJ20MiMaYanZheng {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while (in.hasNextLine()){// 多组输入
            String s = in.nextLine().trim();
            if (s.length() <= 8 || !count(s) || !matchString(s, 0 ,3)){
                System.out.println("NG");
            }else System.out.println("OK");
        }
    }
    // 验证是否包含重复子串
    public static boolean matchString(String s, int left, int right){
        if (right > s.length()) return true;
        if (s.substring(right).contains(s.substring(left, right))) return false;
        return matchString(s, left + 1, right + 1);
    }
    // 使用正则表达式进行匹配，正则表达式有关的知识还是差很多
    public static boolean count(String s){
        String temp = "adas\\dasda\\sdasd";
        String[] split = temp.split("\\\\");
        int count = 0;
        Pattern p1 = Pattern.compile("[A-Z]");
        if (p1.matcher(s).find()) count++;
        Pattern p2 = Pattern.compile("[a-z]");
        if (p2.matcher(s).find()) count++;
        Pattern p3 = Pattern.compile("[0-9]");
        if (p3.matcher(s).find()) count++;
        Pattern p4 = Pattern.compile("[^a-zA-Z0-9]");
        if (p4.matcher(s).find()) count++;
        return count >= 3;
    }
}





















